package nb.diskfilesystem.controller;

import javafx.scene.control.ScrollPane;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.TilePane;
import nb.diskfilesystem.ui.FileContextMenu;
import nb.diskfilesystem.ui.MainView;
import nb.diskfilesystem.util.AnimationUtil;

public class FileSystemController {
    private FileContextMenu fileContextMenu; // 文件上下文菜单
    private ScrollPane scrollPane; // 滚动面板
    private TilePane fileArea; // 文件区域

    public FileSystemController(FileContextMenu fileContextMenu) {
        scrollPane = MainView.scrollPane;
        fileArea = (TilePane) scrollPane.getContent();
        this.fileContextMenu = fileContextMenu;
        addBlockContextMenuListener(); // 添加空白区域右键菜单监听器
    }

    // 添加空白区域右键菜单监听器
    private void addBlockContextMenuListener() {
        // 为滚动面板设置鼠标点击事件监听器
        scrollPane.setOnMouseClicked(event -> {
            // 如果是右键点击
            if (event.getButton() == MouseButton.SECONDARY) {
                // 显示空白区域右键菜单，并添加动画效果
                AnimationUtil.animateContextMenu(true, fileContextMenu.getBlockContextMenu());
                fileContextMenu.getBlockContextMenu().show(scrollPane, event.getScreenX(), event.getScreenY());
            } else if (event.getButton() == MouseButton.PRIMARY) { // 如果是左键点击
                // 移除所有文件项的选中样式
                fileArea.getChildren().forEach(node -> {
                    if (node instanceof BorderPane) {
                        node.getStyleClass().remove("borderpane-selected");
                    }
                });
                // 隐藏空白区域右键菜单
                fileContextMenu.getBlockContextMenu().hide();
            }
        });
    }

}